
#include "MtxAdvance.h"
#ifndef __VECTOR2_H__
#define __VECTOR2_H__

namespace MTX
{
	class Vector2
	{
	public:
		inline Vector2(void)
			:x(0),y(0){}
		inline Vector2(const float fX,const float fY)
			:x(fX),y(fY){}
		inline Vector2(const Vector2& w)
			:x(w.x),y(w.y){}
		inline float operator [](int i) const;
		inline bool operator == (const Vector2& w) const;
		inline Vector2 operator -(void) const;
		inline Vector2 operator +(const Vector2& w) const;
		inline Vector2 operator -(const Vector2& w) const;
		inline Vector2 operator *(const float fScalar) const;
		inline float operator *(const Vector2& w) const;
		inline Vector2 operator /(const float fScalar) const;
		inline Vector2 operator /(const Vector2& w) const;
		inline Vector2& operator +=(const Vector2& w);
		inline Vector2& operator -=(const Vector2& w);
		inline Vector2& operator *=(const float fScalar);
		inline Vector2& operator *=(const Vector2& w);
		inline Vector2& operator /=(const float fScalar);
		inline Vector2& operator /=(const Vector2& w);
		inline Vector2 Cross(const Vector2& w) const;
		inline float Dot(const Vector2& w) const;
		inline float Length(void) const;
		inline bool Normalized(void) const;
		inline void Normalize(void);
		inline float Distance(const Vector2& w) const;
		inline bool IsZeroLength(void) const;
		~Vector2(void);
	private:
		float x,y;
	};
}
#endif